package com.itzdm.friend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.itzdm.common.result.PageResult;
import com.itzdm.friend.domain.dto.FriendRemarkDto;
import com.itzdm.friend.domain.dto.FriendRequestDto;
import com.itzdm.friend.domain.dto.HandleRequestDto;
import com.itzdm.friend.domain.po.Friend;
import com.itzdm.friend.domain.vo.FriendGetVo;
import com.itzdm.friend.domain.vo.FriendRequestVo;
import com.itzdm.friend.domain.vo.FriendSearchVo;

import java.util.List;

/**
 * @作者：张德明
 * @时间：2025/4/7 15:47
 */
public interface IFriendService extends IService<Friend> {

    /**
     * 搜索好友
     * @param keyword
     * @return
     */
    FriendSearchVo searchFriend(String keyword);

    /**
     * 添加好友
     * @param friendRequestDto
     */
    void requestFriend(FriendRequestDto friendRequestDto);

    /**
     * 查询好友请求
     * @return
     */
    List<FriendRequestVo> getFriendRequests();

    /**
     * 处理好友请求
     * @param requestId
     * @param handleRequestDto
     */
    Friend handleRequest(Long requestId, HandleRequestDto handleRequestDto);

    /**
     * 获取我的好友列表（分页）
     * @param page 页码，从1开始
     * @param size 每页大小
     * @return 分页结果
     */
    PageResult getMyFriendList(Integer page, Integer size);

    /**
     * 删除好友
     * @param id
     */
    void deleteFriend(Long id);

    /**
     * 修改好友备注
     * @param friendRemarkDto
     */
    void changeFriendRemark(FriendRemarkDto friendRemarkDto);

    /**
     * 获取好友信息
     * @param userId
     * @return
     */
    FriendGetVo getUserInfo(Long userId);
}
